package com.demo.java.OD1_50.OD18;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【查找接口成功率最优时间段】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145520861
 */
public class OdMain {

    // 用于存储符合条件的子区间
    private static List<String> resultList = new ArrayList<>();
    private static int currentLen = 0;

    // 计算数组中从start到end的子数组的和
    private static int getListSum(List<Integer> list, int start, int end) {
        int sum = 0;
        for (int i = start; i <= end; i++) {
            sum += list.get(i);
        }
        return sum;
    }

    // 查找符合条件的区间
    private static void getPeriod(int minAvg, List<Integer> list) {
        resultList.clear();
        currentLen = 0;

        // 遍历所有可能的子区间
        for (int start = 0; start < list.size(); ++start) {
            for (int end = start + 1; end < list.size(); ++end) {
                int sum = getListSum(list, start, end);
                String result = "";
                int length = end - start + 1;

                // 计算平均失效率并判断是否符合条件
                if (sum <= minAvg * length) {
                    result = start + "-" + end;
                }

                // 如果符合条件，检查长度并记录
                if (result.contains("-")) {
                    if (length == currentLen) {
                        resultList.add(result);
                    }
                    if (length > currentLen) {
                        resultList.clear();
                        resultList.add(result);
                        currentLen = length;
                    }
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        try {
            // 读取输入
            while (s.hasNextLine()) {
                int minAvg = Integer.parseInt(s.nextLine().trim()); // 最小平均失效率
                String[] strs = s.nextLine().trim().split(" "); // 失效率数据
                List<Integer> listValues = new ArrayList<Integer>();

                // 将失效率数据转换为整数
                for (int i = 0; i < strs.length; i++) {
                    listValues.add(Integer.parseInt(strs[i]));
                }

                // 查找符合条件的时间段
                getPeriod(minAvg, listValues);

                // 输出结果
                if (!resultList.isEmpty()) {
                    for (int i = 0; i < resultList.size(); i++) {
                        System.out.print(resultList.get(i));
                        System.out.print(" ");
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

